home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Disc to the Future 2
/
Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin
/
MAC
/
THINKC
/
4_0
/
ASKCOLOR
/
ASKCOLOR.C
Wrap
C/C++ Source or Header
|
1991-08-27
|
3KB
|
133 lines
/*
ColorPicker.c
Copyright 1991 by Brown University. All rights reserved.
THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESSED OR IMPLIED
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Usage:
get AskColor( <prompt>, <rgb color> )
Replace prompt with some explanitory message and <rgb color> with a
string of three items, "red,green,blue". A string of three items is
returned if the user chooses a color. Otherwise, empty is returned.
*/
#include "hyperxcmd.h"
#include <SetUpA4.h>
#include <stdlib.h>
RGBColor * StringToRGBColor( StringPtr string, RGBColor * color );
RGBColor * StringToRGBColor( StringPtr string, RGBColor * color )
{
char * digits;
digits = PtoCstr( string );
color->red = (int) strtol( digits, &digits, 10 );
color->green = (int) strtol( digits, &digits, 10 );
color->blue = (int) strtol( digits, &digits, 10 );
CtoPstr( (char *) string );
} /* StringToRGBColor */
StringPtr ZeroHandleToString( Handle handle, StringPtr string );
StringPtr ZeroHandleToString( Handle handle, StringPtr string )
{
memset( string, 0, sizeof( 255 ) );
strncpy( (char *) string, *handle, sizeof( Str255 ) - 1 );
CtoPstr( (char *) string );
} /* ZeroHandleToString */
pascal void main( XCmdPtr paramPtr )
{
Point where;
Str255 prompt;
Str255 color;
RGBColor oldcolor;
RGBColor newcolor;
char result[64];
RememberA0();
SetUpA4();
/* Parse Paramater List */
switch ( paramPtr->paramCount )
{
case 1:
switch ( **(paramPtr->params[0]) )
{
case '?':
paramPtr->returnValue = PasToZero( paramPtr, (StringPtr) "\pAskColor( \"prompt\", \"red green blue\" )" );
break;
case '!':
paramPtr->returnValue = PasToZero( paramPtr, (StringPtr) "\pAskColor 1.0b2,Copyright 1991 by Brown University. All rights reserved." );
break;
case '@':
paramPtr->returnValue = PasToZero( paramPtr, (StringPtr) "\pAndrew Gilmartin\rComputing & Information Services\rBrown University\rProvidence, RI 02912\rUSA\r(401) 863-7CIS\randrew_gilmartin@brown.edu (internet)" );
break;
default:
/* SET_ERROR( ERROR_PARAMATER_COUNT );
*/ break;
}
break;
case 2:
ZeroHandleToString( paramPtr->params[0], prompt );
ZeroHandleToString( paramPtr->params[1], color );
StringToRGBColor( color, &oldcolor );
where.h = where.v = 0;
if ( GetColor( where, &prompt, &oldcolor, &newcolor ) )
{
sprintf
( result
, "%lu %lu %lu"
, (unsigned long) newcolor.red
, (unsigned long) newcolor.green
, (unsigned long) newcolor.blue );
CtoPstr( result );
paramPtr->returnValue = PasToZero( paramPtr, (StringPtr) result );
}
break;
default:
/* SET_ERROR( ERROR_PARAMATER_COUNT );
*/ break;
}
/* if ( ERROR() != ERROR_NONE )
ErrorMessage( paramPtr );
*/
RestoreA4();
/* Bye, Bye! */
} /* main */